Intelligent control of feeding media units in a printer

ABSTRACT

An example method performed by a computing device may involve receiving print job data representing a print job to be carried out by a printer to produce at least one copy of a media product. The method may also involve using a condition set to select, from a plurality of trays of the printer that are each configured for supplying media units, a set of one or more trays for use in carrying out the print job. The condition set may include a first condition that the set of trays includes a particular tray that is holding enough media units for supplying a total number of media units required to complete the print job. The method may also involve in response to using the condition set to select the set of trays, controlling the printer to carry out the print job using the set of trays.

BACKGROUND

Automation of printing operations must take numerous factors intoaccount and it can thus often be difficult to manage automated printingoperations. For example, existing printers with multiple trays andoutput bins often have functionality to automatically select which traysshould supply media units (e.g., paper) for printing and/or which outputbins should be used to store the output (e.g., a media product, such asa multi-page document) of the print job.

However, the automation functionality of such existing printers is oftencentered around only a subset of attributes of the print job, such asphysical production requirements. For instance, existing automationsystems might select trays and/or bins containing paper whose dimensionsmatch the dimensions specified as part of the current print job, butignore other printing attributes. Additionally or alternatively,existing automation systems might select trays and/or bins based on therespective status of each such tray and/or bin, and/or might selecttrays and/or bins based on predefined selection policies that take alimited amount of printing and selection criteria into account. As aresult, such existing automation systems can be error-prone in directingprinters to carry out print jobs. For example, the printer might producea media product made up of incorrect paper (e.g., some pages of one sizeor color, some pages of a different size or color) and/or might split upthe media product between two or more bins when the media product wasmeant to be kept together and output into a single bin. As anotherexample, less-than-optimized automated tray selection can lead to one ormore trays becoming empty (or one or more bins becoming full) and havingto be reloaded (or emptied) in order to complete the print job. Theseand other errors in the automation and printing process can makeprinting time consuming and can require more human intervention thandesired to resolve such errors (e.g., by having users load new paper ina tray to avoid the printer switching to unacceptable paper).

SUMMARY

In one aspect, a method for controlling feeding of media units in aprinter is provided. The method involves receiving, by a computingdevice configured to control operation of the printer, print job datarepresenting a print job to be carried out by the printer to produce atleast one copy of a media product, where the printer includes aplurality of trays that are each configured for supplying media unitsfor print jobs carried out by the printer. The method further involvesusing, by the computing device, a condition set to select, from theplurality of trays, a set of one or more trays for use in carrying outthe print job. Using the condition set to select the set of traysinvolves determining whether the set of trays satisfies at least onecondition of the condition set and, in response to determining that theset of trays satisfies at least one condition of the condition set,selecting the set of trays for use in carrying out the print job, wherethe condition set comprises a first condition that the set of traysincludes a particular tray that is holding enough media units forsupplying a total number of media units required to complete the printjob, the total number of media units being defined as a number of mediaunits required per copy of the media product multiplied by a number ofcopies of the media product requested as part of the print job. Themethod further involves, in response to using the condition set toselect the set of trays, controlling, by the computing device, theprinter to carry out the print job using the set of trays.

In another aspect, a system is provided. The system includes a printerand a computing device, where the printer includes a plurality of traysthat are each configured for supplying media units for print jobscarried out by the printer. The computing device is configured toreceive print job data representing a print job to be carried out by theprinter to produce at least one copy of a media product, where theprinter includes a plurality of trays that are each configured forsupplying media units for print jobs carried out by the printer. Thecomputing device is also configured to use a condition set to select,from the plurality of trays, a set of one or more trays for use incarrying out the print job. Using the condition set to select the set oftrays involves determining whether the set of trays satisfies at leastone condition of the condition set and, in response to determining thatthe set of trays satisfies at least one condition of the condition set,selecting the set of trays for use in carrying out the print job, wherethe condition set comprises a first condition that the set of traysincludes a particular tray that is holding enough media units forsupplying a total number of media units required to complete the printjob, the total number of media units being defined as a number of mediaunits required per copy of the media product multiplied by a number ofcopies of the media product requested as part of the print job. Thecomputing device is also configured to, in response to using thecondition set to select the set of trays, control the printer to carryout the print job using the set of trays

In another aspect, an article of manufacture is provided. The article ofmanufacture includes non-transitory data storage storing at leastcomputer-readable instructions that, when executed by one or moreprocessors of a computing device, cause the computing device to performoperations. The operations include: receiving print job datarepresenting a print job to be carried out by a printer to produce atleast one copy of a media product, where the printer includes aplurality of trays that are each configured for supplying media unitsfor print jobs carried out by the printer; using a condition set toselect, from the plurality of trays, a set of one or more trays for usein carrying out the print job, wherein using the condition set to selectthe set of trays comprises determining whether the set of trayssatisfies at least one condition of the condition set and, in responseto determining that the set of trays satisfies at least one condition ofthe condition set, selecting the set of trays for use in carrying outthe print job, where the condition set comprises a first condition thatthe set of trays includes a particular tray that is holding enough mediaunits for supplying a total number of media units required to completethe print job, the total number of media units being defined as a numberof media units required per copy of the media product multiplied by anumber of copies of the media product requested as part of the printjob; and in response to using the condition set to select the set oftrays, controlling the printer to carry out the print job using the setof trays.

In yet another aspect, a method for controlling media unit output of aprinter is provided. The method involves receiving, by a computingdevice configured to control operation of the printer, print job datarepresenting a print job to be carried out by the printer to produce atleast one copy of a media product, where the printer includes aplurality of bins that are each configured for storing media unitsoutput by the printer in accordance with print jobs carried out by theprinter. The method also involves using, by the computing device, acondition set to select, from the plurality of bins, a set of one ormore bins for use in carrying out the print job. Using the condition setto select the set of bins involves determining whether the set of binssatisfies at least one condition of the condition set and, in responseto determining that the set of bins satisfies at least one condition ofthe condition set, selecting the set of bins for use in carrying out theprint job, where the condition set comprises a first condition that theset of bins includes a particular bin having a remaining media unitcapacity suitable for storing a total number of media units required tocomplete the print job, the total number of media units being defined asa number of media units required per copy of the media productmultiplied by a number of copies of the media product requested as partof the print job. The method also involves, in response to using thecondition set to select the set of bins, controlling, by the computingdevice, the printer to carry out the print job and store media units ofthe at least one copy of the media product in the set of bins.

In yet another aspect, a system is provided. The system includes aprinter and a computing device, where the printer includes a pluralityof bins that are each configured for storing media units output by theprinter in accordance with print jobs carried out by the printer. Thecomputing device is configured to receive a print job data representinga print job to be carried out by the printer to produce at least onecopy of a media product. The computing device is also configured to usea condition set to select, from the plurality of bins, a set of one ormore bins for use in carrying out the print job. Using the condition setto select the set of bins involves determining whether the set of binssatisfies at least one condition of the condition set and, in responseto determining that the set of bins satisfies at least one condition ofthe condition set, selecting the set of bins for use in carrying out theprint job, where the condition set comprises a first condition that theset of bins includes a particular bin having a remaining media unitcapacity suitable for storing a total number of media units required tocomplete the print job, the total number of media units being defined asa number of media units required per copy of the media productmultiplied by a number of copies of the media product requested as partof the print job. The computing device is also configured to, inresponse to using the condition set to select the set of bins, controlthe printer to carry out the print job and store media units of the atleast one copy of the media product in the set of bins.

In yet another aspect, an article of manufacture is provided. Thearticle of manufacture includes non-transitory data storage storing atleast computer-readable instructions that, when executed by one or moreprocessors of a computing device, cause the computing device to performoperations. The operations include: receiving print job datarepresenting a print job to be carried out by a printer to produce atleast one copy of a media product, where the printer includes aplurality of bins that are each configured for storing media unitsoutput by the printer in accordance with print jobs carried out by theprinter; using a condition set to select, from the plurality of bins, aset of one or more bins for use in carrying out the print job, whereusing the condition set to select the set of bins comprises determiningwhether the set of bins satisfies at least one condition of thecondition set and, in response to determining that the set of binssatisfies at least one condition of the condition set, selecting the setof bins for use in carrying out the print job, where the condition setcomprises a first condition that the set of bins includes a particularbin having a remaining media unit capacity suitable for storing a totalnumber of media units required to complete the print job, the totalnumber of media units being defined as a number of media units requiredper copy of the media product multiplied by a number of copies of themedia product requested as part of the print job; and in response tousing the condition set to select the set of bins, controlling theprinter to carry out the print job and store media units of the at leastone copy of the media product in the set of bins.

Other aspects, embodiments, and implementations will become apparent tothose of ordinary skill in the art by reading the following detaileddescription, with reference where appropriate to the accompanyingdrawings.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic block diagram illustrating a system forintelligent control of printing operations, in accordance with at leastsome example embodiments.

FIG. 2 illustrates a flowchart for controlling feeding of media units ina printer, in accordance with at least some example embodiments.

FIG. 3 illustrates a flowchart for controlling media unit output of aprinter, in accordance with at least some example embodiments.

DETAILED DESCRIPTION

In the following detailed description, reference is made to theaccompanying figures, which form a part hereof. In the figures, similarsymbols typically identify similar components, unless context dictatesotherwise. The illustrative embodiments described in the detaileddescription, figures, and claims are not meant to be limiting. Otherembodiments may be utilized, and other changes may be made, withoutdeparting from the scope of the subject matter presented herein. It willbe readily understood that the aspects of the present disclosure, asgenerally described herein, and illustrated in the figures, can bearranged, substituted, combined, separated, and designed in a widevariety of different configurations, all of which are explicitlycontemplated herein.

I. OVERVIEW

The present disclosure refers to printer production of “media products”using “media units.” Embodiments of the present disclosure will bedescribed herein primarily in the context of printing media productsthat take the form of paper documents, where sheets of paper are “mediaunits.” It should be understood, however, that the present disclosurecan be applicable to the printing of other types of media, such asthree-dimensional (3D) printing (in which case “media units” may befilament selections used for 3D printing). Other examples are possibleas well.

Furthermore, the embodiments of the present disclosure will be describedwith reference to “trays” and “bins” of a printer, where the trays areeach configured for supplying media units for print jobs (also referredto herein as “jobs,” for brevity) carried out by the printer and thebins are each configured for storing media units output by the printerin accordance with print jobs carried out by the printer. However, itshould be understood that, physical components of a printer other thantrays can be similarly configured and used to supply media units forprint jobs, and physical components of the printer other than bins canbe similarly configured and used to store media units output by theprinter.

As discussed above, errors in existing automation systems decisionmaking can result in various print job errors and inefficiencies inprinting media products. These issues can be especially problematic anddifficult to manage when managing the printing operations acrossnumerous (e.g., hundreds of) printers, when numerous print jobs arebeing performed in a short time span, and/or when print jobs involvenumerous (e.g., hundreds of) copies of at least one media product.

In practice, many of these issues exist as a result of automationsystems considering only certain media unit attributes for a print job.For example, printer trays and bins might not be selected based onwhether they can supply (for trays) or hold (for bins) the entire printjob. As another example, when existing automation systems attempt tocontrol switching between trays during printing, such systems might notconsider whether papers that match print job requirements will have asubstantially different appearance. For instance, a first portion of theprint job can be printed with one color of paper from a first tray, thejob requirements might not specify paper color, and thus, in switchingto another tray that holds paper with attributes that meet the specifiedjob requirements (e.g., paper dimensions), a different color paper mightbe used to finish the remaining portion of the print job, thus producinga document having paper with the correct dimensions, but undesirablyhaving two different color papers. As yet another example, when existingautomation systems attempt to control switching between bins duringprinting, such systems might consider stacked sheets, which may causecontent within the job to be split up when that content should be kepttogether. Other examples are possible as well.

To address these and other issues, described herein are techniques thatrelate to intelligent control of media unit feeding (e.g., from trays)and output (e.g., to bins), particularly an intelligent control system(also referred to herein as “the disclosed system,” or “the system,” forbrevity) that takes into account more factors than existing systems aswell as factors that are not typically considered by existing systems.As a result, the disclosed system can improve printing efficiency byreducing human intervention and reducing or eliminating errors inproduced media products. Particularly, upon receipt of print job datarepresenting a print job to be carried out, a computing device of thedisclosed system (also referred to herein as “the computing device,” forbrevity) can use a condition set to select a set of trays (which caninclude one or more of the printer's trays) for use in carrying out theprint job and/or can use a condition set to select a set of one or morebins of the printer for use in carrying out the print job. The set oftrays can include one or more of the printer's trays, and the set ofbins can include one or more of the printer's bins. The condition setused to select tray(s) will hereinafter be referred to interchangeablywith “tray condition set,” and the condition set used to select bin(s)will hereinafter be referred to interchangeably with “bin conditionset.”

If the computing device determines that the set of trays satisfies atleast one condition of the tray condition set, the computing deviceselects the set of trays for use in carrying out the print job.Similarly, if the computing device determines that the set of binssatisfies at least one condition of the bin condition set, the computingdevice selects the set of bins for use in carrying out the print job. Anexample first condition that can be included in the tray condition setis a condition that the set of trays includes a particular tray that isholding enough media units for supplying a total number of media unitsrequired to complete the print job. The total number of media units isdefined as a number of media units required per copy of the mediaproduct multiplied by a number of copies of the media product requestedas part of the print job. An example first condition that can beincluded in the bin condition set is a condition that the set of binsincludes a particular bin having a remaining media unit capacitysuitable for storing a total number of media units required to completethe print job. The total number of media units is defined as a number ofmedia units required per copy of the media product multiplied by anumber of copies of the media product requested as part of the printjob. Other conditions are possible and will be described in more detailherein. The disclosed systems and methods are advantageously proactivein helping determine whether all required resources for a print job(e.g., trays, bins, and media units held by or output to) are availablebefore such resources are used.

Furthermore, as will be described in more detail later herein, many ofthe operations of the disclosed system can be performed proactively withrespect to a queue of print jobs in order to reduce human interventionand reduce errors. For example, the disclosed system can look ahead atupcoming print jobs and determine which of the printer's trays/bins areavailable and suitable for use in completing two or more of the nextprint jobs in the queue. These proactive operations can also involvenotifying the user farther in advance so that the user has enough timeto reload trays and/or empty bins to a degree that would allow multiplequeued print jobs to be performed. These proactive operations can alsoinvolve reshuffling the print jobs in the queue based on variousfactors, such as the quantity of media units for each of the upcomingjobs or the media unit dimensions required for each of the upcomingjobs.

Typically, when a job is queued for printing, existing systemsconfigured to control printer operation select trays based at least inpart on a determination of which trays are available for use (e.g.,which trays have paper in them). Similarly, existing systems select binsbased at least in part on a determination of which bins are availablefor use (e.g., which bins are empty). One or more of the embodimentsdescribed herein can make these determinations as well, such as aprerequisite for a tray/bin before the tray/bin is considered forselection for use in carrying out a job.

Implementations described below are for purposes of example. Theimplementations described below, as well as other implementations, mayprovide other improvements as well.

II. EXAMPLE PRINTING CONTROL SYSTEM AND COMPUTING DEVICE

Referring now to the figures, FIG. 1 is a schematic block diagramillustrating a system 100 for intelligent control of printingoperations, in accordance with at least some example embodiments. Asshown, the system 100 includes a computing device 102 and one or moreprinters 104. In some embodiments, the computing device 102 can beconfigured to perform at least part of the herein-described proceduresand techniques for controlling feeding and output of media units forprinting. As further shown, the system 100 includes a notificationdevice 106. The computing device 102 is connected to the printer(s) 104by way of communication link 108 and the computing device 102 isconnected to the notification device 106 by way of communication link110. Either communication link 108, 110 can be a wired (e.g., Ethernetor other electronics) or wireless connection (e.g., Bluetooth®, ZigBee®,Wi-Fi®, WiMAX™). For example, the computing device 102 can communicatewith the printer(s) 104 over a local or wide area network.

The computing device 102 can take the form of a desktop computer, aserver, a laptop computer, a smartphone, a wearable computing device, atablet computer, and/or other type of computing device. The computingdevice can include one or more input devices 112, one or more outputdevices 114, one or more processors 116, and memory 118. In otherexamples, the computing device 102 can include more or fewer componentsin other arrangements.

The input device(s) 112 can include user input devices, network inputdevices, sensors, and/or other types of input devices. For example, theinput device(s) 102 can include user input devices such as a touchscreen, a keyboard, a keypad, a computer mouse, a track ball, ajoystick, a camera, a voice recognition module, and/or other similardevices. Network input devices can facilitate communication over thecommunication links 108, 110 and can include wired network receiversand/or transceivers, such as an Ethernet® transceiver, a UniversalSerial Bus (USB) transceiver, or similar transceiver configurable tocommunicate via a twisted pair wire, a coaxial cable, a fiber-opticlink, or a similar physical connection to a wireline network, and/or caninclude wireless network receivers and/or transceivers, such as aBluetooth® transceiver, a ZigBee® transceiver, a Wi-Fi® transceiver, aWiMAX™ transceiver, a wireless wide-area network (WWAN) transceiverand/or other similar types of wireless transceivers configurable tocommunicate via a wireless network.

The output device(s) 114 can include user display devices, audibleoutput devices, network output devices, and/or other types of outputdevices. User display devices can include one or more printingcomponents, liquid crystal displays (LCD), light emitting diodes (LEDs),lasers, displays using digital light processing (DLP) technology,cathode ray tubes (CRT), light bulbs, and/or other similar devices.Audible output devices can include a speaker, speaker jack, audio outputport, audio output device, headphones, earphones, and/or other similardevices. Network output devices can facilitate communication over thecommunication links 108, 110 and can include wired network receiversand/or transceivers, such as an Ethernet® transceiver, a UniversalSerial Bus (USB) transceiver, or similar transceiver configurable tocommunicate via a twisted pair wire, a coaxial cable, a fiber-opticlink, or a similar physical connection to a wireline network, and/or caninclude wireless network receivers and/or transceivers, such as aBluetooth® transceiver, a ZigBee® transceiver, a Wi-Fi® transceiver, aWiMAX™ transceiver, a wireless wide-area network (WWAN) transceiverand/or other similar types of wireless transceivers configurable tocommunicate via a wireless network. Other types of output devices caninclude, but are not limited to, vibration devices, haptic feedbackdevices, and non-visible light emission devices; e.g., devices that emitinfra-red or ultra-violet light. Other output devices 104 are possibleas well.

The processor(s) 116 can include one or more general purpose processors,central processing units (CPUs), CPU cores, and/or one or more specialpurpose processors (e.g., graphics processing units (GPUs), digitalsignal processors (DSPs), field programmable gated arrays (FPGAs),application specific integrated circuits (ASICs), etc.). Theprocessor(s) 116 can be configured to execute computer-readableinstructions 120 that are contained in memory 118 and/or otherinstructions as described herein.

The memory 118 can include one or more computer-readable storage mediaconfigured to store data and/or instructions that can be read and/oraccessed by at least one of the processor(s) 116. The one or morecomputer-readable storage media can include one or more volatile and/ornon-volatile storage components, such as optical, magnetic, organic orother memory or disc storage, which can be integrated in whole or inpart with at least one of processors 106. The computer-readable storagemedia can include one or more components that store data for shortperiods of time like register memories, processor caches, and/or randomaccess memories (RAM). The computer-readable storage media can includenon-transitory computer readable media that stores program code and/ordata for longer periods of time, such as secondary or persistent longterm storage; for example, read only memory (ROM), optical or magneticdisks, compact-disc read only memory (CD-ROM). In some embodiments,memory 108 can be implemented using a single physical device (e.g., oneoptical, magnetic, organic or other memory or disk storage unit), whilein other embodiments, memory 108 can be implemented using two or morephysical devices.

In particular, the memory 118 can store computer-readable instructions120 that, when executed by one or more of processor(s) 116, can cause acomputing device (e.g., computing device 102) to perform functions, suchas but not limited to, functions related to herein-described procedures,techniques, devices, networks, methods, features, and/or scenarios. Insome embodiments, computer-readable instructions 120 can include atleast instructions for printing operation software 122. Printingoperation software 122, when executed by the processor(s) 116 of thecomputing device 102, provides instructions to the computing device 102to carry out part or all of the methods described herein, and/or providesome or all of the functionality described with respect to examplescenarios. In some embodiments, the computer-readable instructions 120and/or the printing operation software 122 can include at leastinstructions to carry out at least part of the herein-describedfunctionality of a printer, a computing device, and/or other device.

The printer(s) 104 can include components configured to perform one ormore operations, such as scan, print, copy, e-mail, account for,communicate and/or otherwise process documents and/or files that areoriginally available either on paper or electronically. For example, oneor more of the printer(s) 104 can include a plurality of trays that areeach configured for supplying (also referred to herein as “feeding”)media units for print jobs carried out by the printer and can alsoinclude a plurality of bins that are each configured for storing mediaunits output by the printer in accordance with print jobs carried out bythe printer. As another example, one or more of the printer(s) 104 caninclude a keyboard, display device configured to provide a graphicaluser interface (GUI), and/or other user interface device with which auser can interact to view and input information associated with theprinter(s) 104 and/or print jobs carried out by the printer. As anotherexample, one or more of the printer(s) 104 can include scanningcomponents for creating electronic copies of original paper documentsand/or for generating electronic data via optical character recognition(OCR) or other techniques from the original paper documents. As notedabove, the printer(s) 104 and any other printer described herein cantake other forms and can be configured to produce other types of media,such as 3D-printed products. In some embodiments, the printer(s) 104 canperform other tasks and/or other processing as well. As such, theprinter(s) 104 can include products from various manufacturers withvariations in color, speed, computing power, functionality, networkconnectivity, and/or other features.

The notification device 106 can take the form of any computing device orcomponents thereof that is/are configured to provide audio and/or visualnotifications to a user. For example, the notification device 106 cantake the form of a laptop computer, smartphone, or user interface systemthereof (e.g., a graphical user interface (GUI) and/or speaker). In someembodiments, the notification device 106 can be configured to receive,from the computing device 102 or an intermediate device between thecomputing device 102 and the notification device 106, an instructionthat, upon receipt by the notification device 106, causes thenotification device 106 to display a notification, such as anotification indicating that a tray must be loaded with additional mediaunits for a printer to complete a job and/or a notification indicatingthat a bin must be unloaded, and perhaps additionally indicatinginstructions as to how or when the tray/bin should be loaded/unloaded.In some embodiments, the computing device 102 can include thenotification device 106. In other embodiments, one of the printer(s) 104can include the notification device 106 (e.g., the printer's displaydevice, which displays a GUI, can operate as the notification device).Other examples of the notification device 106 are possible as well.

In some embodiments, one or more additional computing devices, e.g., oneor more servers, nodes, and/or other computing devices, can be connectedto the computing device 102, the printer(s) 104, and/or the notificationdevice 106 to perform additional functions.

III. EXAMPLE OPERATIONS FOR CONTROLLING FEEDING OF MEDIA UNITS

FIG. 2 is a flowchart for a method, in accordance with at least someexample embodiments. Method 200 represents a method for controllingfeeding of media units in a printer, where the method 200 can be carriedout by a computing device configured to control operations of a printer,such as computing device 102 shown in FIG. 1. Such a computing devicecan be local to a printer (e.g., an onboard computing device) orremotely positioned from the printer (e.g., a server at a differentgeographic location from the printer).

Block 202 of method 200 involves receiving print job data representing aprint job to be carried out by the printer to produce at least one copyof a media product, wherein the printer includes a plurality of traysthat are each configured for supplying media units for print jobscarried out by the printer.

Block 204 of method 200 involves using a condition set to select, fromthe plurality of trays, a set of one or more trays for use in carryingout the print job, where the act of using the condition set to selectthe set of trays involves determining whether the set of trays satisfiesat least one condition of the condition set and, in response todetermining that the set of trays satisfies at least one condition ofthe condition set, selecting the set of trays for use in carrying outthe print job. As discussed above, the condition set can include a firstcondition that the set of trays includes a particular tray that isholding enough media units for supplying a total number of media unitsrequired to complete the print job, where the total number of mediaunits can be defined as a number of media units required per copy of themedia product multiplied by a number of copies of the media productrequested as part of the print job (e.g., ten sheets of paper per copyand one hundred copies resulting in a total number of one thousandsheets of paper).

Block 206 of method 200 involves, in response to using the condition setto select the set of trays, controlling, by the computing device, theprinter to carry out the print job using the set of trays.

In some embodiments, the printer can allow a user to define, with thecomputing device, media units assigned to a particular tray in at leasttwo different ways. The computing device can store this definition, andthus can determine which trays contain media units having certaindefined attributes. For example, the user can specify one or more mediaunit attributes of media units assigned to a particular tray, such as amedia unit weight (e.g., 80 grams per square meter (gsm), 120 gsm,etc.), media unit dimensions (e.g., letter, A4, etc.), a media unitcolor (e.g., white, blue, etc.), and/or a media unit type (e.g., plain,labels, envelopes, etc.). Additionally or alternatively, the user canselect, from a list of defined media unit types having a broader set ofmedia unit attributes (also referred to herein as a “media unitcatalog,” for brevity), a specific media unit to assign to a particulartray. Examples of media unit attributes that might be included in themedia unit catalog can include, but are not limited to, a media unitweight, media unit dimensions, a media unit color, a media unit type, aunique media unit identifier, a media unit brand, a media unit grain(e.g., short or long), a media unit coating (e.g., uncoated, gloss,matte, satin, etc.), a media unit calendaring (e.g., normal, high,etc.), and/or a media unit texture. Other attributes are possible aswell and can depend on the type of media unit used in printing.

The print job data received at block 202 can specify one or morepreferred job attributes of the print job. Examples of such jobattributes can include any one or more of the media unit attributesdescribed above.

In some embodiments, when the print job is queued for printing, thecomputing device might, before using the tray condition set to selectany trays, determine which of the printer's trays are available for use.Within examples, determining whether a tray is available can involvedetermining, by referring to error codes or in some other manner, thatthe tray is operating properly such that there are no mechanical issuesor obstacles (e.g., a paper jam) that might prevent media units frombeing fed from the tray. Additionally or alternatively, determiningwhich trays are available can involve determining which trays containmedia units in general. Additionally or alternatively, determining whichtrays are available can involve referring to the assigned media unitattributes of the trays to determine which trays contain media unitswhose media unit attributes match one or more job attributes specifiedby the print job. However, in typical practice, one or more of such jobattributes might be defined as a range (e.g., 106-136 gsm), which canresult in different types of media units, including media units thatmight be undesired for use in printing, matching a value within therange (e.g., 120 gsm). Similarly, some job attributes, such as color,might be undefined or unspecified in the print job, which can result indifferent types of media units being fed by trays during printing,including media units that might be undesired for use in printing (e.g.,multiple different color media units). By being more particular withtray selection, the disclosed methods and systems can reduce oreliminate the chances of undesired media units being present in mediaproducts.

In some embodiments, the tray condition set can include, at a minimum,the first condition described above—namely, the first condition that theset of trays includes a particular tray that is holding enough mediaunits for supplying the total number of media units (also referred to asa number of “impressions,” in some scenarios) required to complete theprint job. To facilitate this, the computing device can determine acapacity of at least one available tray—that is, an estimate ordetermination of how many media units are being held by an availabletray. The computing device can determine a capacity of a tray in variousways. For example, the maximum capacity of a particular tray can behard-coded in the software used by the computing device, and thecomputing device can be communicatively coupled to one or more sensors(e.g., six to twelve sensors) that are configured to measure a currentlevel of the tray, detect the dimensions of the loaded media units inthe tray, measure a weight of the current media units in the tray,and/or make other measurements. Thus, the computing device can usereadouts from the sensor(s) to determine the capacity of the particulartray relative to the maximum capacity. In some embodiments, the capacityof the tray can be determined at a more granular level than just usingsensors. For example, the maximum capacity of a particular tray might beknown to the computing device, and the feeding of media units from thetray can be a controlled process such that the tray cannot be unloadedwithout registering an engine unload event. As such, the computingdevice can keep track of engine unload events (as well as empty trayevents that the computing device registers) to determine the capacity ofthe tray. Other examples are possible as well.

If the computing device determines that multiple different trays caneach supply the total number of media units, the computing device canselect one of those trays at random or based on one or more criteria,such as media unit attributes, number of media units held by each tray,and/or other criteria.

Other example conditions that could be part of the tray condition setwill now be described in more detail. As such, the tray condition set tobe satisfied can include the first condition and one or more of thefollowing conditions. It should be understood, however, that any one ormore of the following conditions can be used as an alternative to thefirst condition. That is, in selecting trays for use in printing, thecomputing device might determine whether one or more of the followingconditions are satisfied without considering whether the first conditionis satisfied.

In line with the discussion above, the computing device can first lookfor a single tray that can supply all the media units needed to completethe print job. Because tray switching can impact productivity, feedingfrom a single tray (without needing to load the tray during printing)can be optimal. However, other conditions can address the situationwhere one tray might not be sufficient for completing the print job. Forinstance, another example condition can be that, if the set of traysdoes not include a particular tray that is holding enough media unitsfor supplying the total number of media units, the set of trays includesmultiple trays that, in combination with each other, are holding enoughmedia units for supplying the total number of media units. For example,if a first tray has 50 sheets and a second tray has 70 sheets, thecomputing device can select both trays for use in carrying out a printjob requiring 100 sheets.

As a result of the set of trays including multiple trays that holdenough media units, the computing device can cause the printer to switchfrom a first tray to a second tray once the first tray is out of paper,and so on and so forth if additional trays are included in the set oftrays. To improve the efficiency with which the printer completes printjobs, in some embodiments, the computing device can be configured to usea minimum possible number of tray switches, including switches to apreviously-used tray during printing (e.g., a switch from a first trayto a second tray, and then back to the first tray). To facilitate this,another example condition can be that, if the set of trays does notinclude a particular tray that is holding enough media units forsupplying the total number of media units, the set of trays will requireless than a threshold number of tray switches to be performed tocomplete the print job. For example, if a first tray has 70 sheets, asecond tray has 30 sheets, a third tray has 20 sheets, and a fourth trayhas 10 sheets, the computing device can select the first and secondtrays for a print job requiring 100 sheets, as opposed to selecting thefirst, third, and fourth trays. Other examples are possible as well.

Additionally or alternatively to the conditions described above orelsewhere herein, the computing device can consider whether each tray ofthe set of trays is holding media units having the same media unitattribute(s) as specified in the print job. Thus, another examplecondition can be that each tray of the set of trays is holding mediaunits having a media unit attribute that matches the job attributespecified by the print job data. For example, if the print job requires1000 sheets and paper whose weight is in the range of 106-136 gsm, afirst tray has 750 sheets of a 110 gsm paper, a second tray has 500sheets of a 130 gsm paper, and a third tray has 500 sheets of a 130 gsmpaper, the computing device might select the second tray and the thirdtray to ensure that the print job can be completed without switching toa different paper weight. As a variation on the previous example, if theprint job requires 1000 sheets and paper whose weight is in the range of106-136 gsm, a first tray has 750 sheets of a 110 gsm paper, a secondtray has 500 sheets of a 130 gsm paper, a third tray has 500 sheets of a130 gsm paper, a fourth tray has 150 sheets of a 110 gsm paper, and afifth tray has 100 sheets of a 110 gsm paper, the computing device mightstill select the second tray and the third tray to ensure that the printjob can be completed without switching to a different paper weight andto minimize tray switches.

In some embodiments, the computing device can be configured to considercertain forms of user-specified preferences for what media unitattributes to use in carrying out the print job. Such user-specifiedpreferences can be included as part of the printing instructionsprovided by the user (e.g., by way of a client device of the user) tothe computing device and/or as part of the job attributes. In somecases, the user-specified preferences can take the form of a priority orpolicy. For example, the user may specify priority for certainattributes. For instance, if multiple paper weights match a specifiedweight range, the user may define and then prioritize a policy to usethe lightest weight possible (as this might cost less). As such, thisdefined policy would be applied before other policies, such as before apolicy about minimizing tray switching. In addition, the user may alsospecify that media switching ignore certain attributes (e.g. brand) sothat the computing device will switch between papers that are identicalonce the specified attributes are ignored. Alternatively, the user canspecify a list of attributes that should match for media switching sothat all other attributes are not used to constraint media switching.For example, the user may state that only dimensions, weight and colorbe used to limit paper switching so the system may switch between papersof different brands or grains.

Even though there may be numerous media unit attributes available intotal to specify as preferred media unit attributes, the user can, insome scenarios, specify less than the total number of those media unitattributes. However, in some embodiments, the total number of media unitattributes from which the user can select preferences is not a fixedlist of media unit attributes. Media unit attributes can be added,deleted, or otherwise changed. Further, the attributes preferred by theuser might not be fixed either and can be added, removed, or otherwisechanged based on changing user preferences.

To facilitate use of user-specified attributes, the computing device canreceive data specifying a plurality of media unit attributes preferredfor use in carrying out the print job. For example, the data can bereceived by way of one of the input device(s) 112 described above. Suchdata could be received at one point in time and then stored by thecomputing device in persistent storage, such as memory 118 of theprinter 104 described above. Other examples are possible. The data cantake the form of a user-defined policy that specifies which media unitattributes the computing device should consider. Furthermore, the datacan specify media unit attributes with varying granularity. For example,the data can specify categories of media unit attributes, such as mediaunit dimensions or media unit color. Additionally or alternatively, thedata can specify more specific examples of such attributes, such asLetter or White. Other examples are possible as well.

Accordingly, another example condition is that each tray of the set oftrays (whether a single tray, or multiple trays to switch between) isholding media units having media unit attributes that match each mediaunit attribute in the plurality of media unit attributes specified bythe data. For example, consider a scenario where a first tray hasLetter, White, 80 gsm paper, a second tray has Letter, Blue, 80 gsmpaper, a third tray has Letter, White, 110 gsm paper, and a fourth trayhas Letter, White, 80 gsm paper. In this example, the computing devicemight receive data with user-specified media attributes of Letter (fordimensions) and White (for color). Thus, the computing device couldselect the first tray, the third tray, and/or the fourth tray.

In some embodiments, the computing device can provide restrictions onthe preceding example condition. In particular, the computing device canbe configured to consider more media unit attributes in addition to themedia unit attributes that the user specifies as preferred media unitattributes, so as not to limit tray selection to potentially broadertray selection criteria. For example, consider a scenario where a firsttray has Letter, White, 80 gsm paper, a second tray has Letter, Blue, 80gsm paper, a third tray has Letter, White, 110 gsm paper, and a fourthtray has Letter, White, 80 gsm paper. In this example, the computingdevice might be configured, as a result of a stored policy or otherdata/programming, to only select trays having media units with the samemedia unit dimensions, media unit color, and media unit weight. However,a user might provide data that indicates a preference of only media unitdimensions and media unit color. In this situation, the computingdevice, when selecting which trays to use, can still consider media unitweight even though the user did not specify media unit weight as apreferred attribute. Particularly, the computing device might select thefirst tray and the fourth tray, but the second and third trays would notwork because the second tray has the wrong color and the third tray hasa different weight than the other trays. As a result, the print job iscarried out using paper with the same three attributes, thereby avoidinginconsistencies in attributes across the papers in the printed mediaproduct. Other examples are possible as well.

In some embodiments, the computing device can be configured to ignore atleast one of the plurality of media unit attributes specified by thedata. In such embodiments, after receiving the data, the computingdevice can receive second data specifying instructions to consider onlya first subset of the plurality of media unit attributes and to ignore asecond subset of the plurality of media unit attributes, where the firstsubset and the second subset are mutually exclusive. The second data canbe transmitted to the computing device from a client device of a userand/or input into the printer via the input device(s) 112. In someexamples, the second data can take the form of executable code thatprograms the computing device to ignore certain media unit attributes.

Receipt of the second data can change how the computing devicedetermines whether the aforementioned condition that each tray of theset of trays is holding media units having media unit attributes thatmatch each media unit attribute in the plurality of media unitattributes specified by the data is satisfied. Particularly, in responseto receiving the second data, the computing device might considerwhether each tray of the set of trays is holding media units havingmedia unit attributes that match each media unit attribute in the firstsubset of media unit attributes specified by the second data, but notconsider whether each tray of the set of trays is holding media unitshaving media unit attributes that match any of the media unit attributesin the second subset of media unit attributes. For example, the datamight specify dimensions, color, weight, and grain as attributes,whereas the second data might instruct the computing device to ignoregrain when selecting trays. Other examples are possible as well.

There can be some scenarios where the computing device determines, afterprinting has already started, that one or more trays of the set of traysselected for use in printing has/have run out of media unit attributes.In these scenarios, it can be desirable for the computing device toconsider more attributes than those specified in the second data andconsidered before the print job begins being carried out, so as to helpensure that the same attributes are used throughout printing. Forinstance, if the selected tray(s) run out of media units, the computingdevice can find one or more additional trays of the printer that havemedia units with attributes that match all of the attributes in thedata.

To facilitate this, while the printer is carrying out the print job, thecomputing device can determine that the set of trays have insufficientmedia units for completing a remaining portion of the print job and, inresponse to determining that the set of trays have insufficient mediaunits for completing the remaining portion of the print job, and basedon an additional tray of the printer having media unit attributes thatmatch each media unit attribute in the plurality of media unitattributes specified by the data, the computing device can select theadditional tray for the printer to switch to for carrying out theremaining portion of the print job. Then, in response to selecting theadditional tray, the computing device can control the printer to carryout the remaining portion of the print job using the additional tray. Insome examples, more than one additional tray can be selected in thismanner.

As a more particular example, consider a scenario where the dataspecifies Letter, White, and 80-120 gsm paper and the second datainstructed the computing device to consider only a subset ofattributes—namely, Letter paper. A first tray might include Letter,White, 80 gsm paper, a second tray might include Letter, Blue, 80 gsmpaper, and a third tray might include Letter, White, 120 gsm paper.Because the second data only specifies dimensions as an attribute (inthis case, Letter paper), any one or more the three trays might beselected (perhaps based on other conditions as well) to be part of theset of trays because each has Letter paper. But if the first tray isselected and runs out of paper while the printer is carrying out theprint job, the computing device can use all of the attributes from thedata (i.e., Letter, White, and 80-120 gsm paper) to select an additionaltray to switch to complete the print job, which in this particularscenario can be the third tray. Other examples are possible as well. Inthese and other similar scenarios, the computing device might not switchto another tray unless or until the computing device determines that allattributes of that tray match the data.

In line with the discussion above, some situations may arise where,either during tray selection before the print job starts or after trayselection while the print job is being carried out, one or more traysrun out of media units, in which case a user might have to load newmedia units into such tray(s). The conditions described above might notinvolve a user having to load new media units, and in some embodiments,such conditions can be prioritized over conditions that are associatedwith user loading so as to avoid, whenever possible, a user having toload media units.

The following conditions relate to situations where the computing devicedetermines that the printer's trays might not be able to complete theprint job without a user having to load more media units in at least onetray. By having the computing device make such a determination ahead oftime and then react to the determination, the disclosed systems canimprove efficiency in the sense that the computing device can morequickly notify a user that more media units will be needed, therebygiving the user more time to react and load more media units. Bycontrast, existing solutions might be slower to determine that moremedia units are needed and/or slower to notify a user that more mediaunits are needed.

Accordingly, in an embodiment where the print job specifies a particularjob attribute (or perhaps multiple job attributes), another examplecondition is that, if the set of trays does not include one or moretrays that, individually and in combination, are holding enough mediaunits for supplying the total number of media units, the set of traysincludes (a) a first tray holding (i) the highest number of media unitsof the plurality of trays and (ii) media units having a media unitattribute that matches the job attribute specified by the print jobdata, and the set of trays also includes (b) a second tray that (i) hasa media unit capacity suitable for completing the print job after thefirst tray is empty and (ii) is able to hold media units having themedia unit attribute that matches the job attribute specified by theprint job data. In response to determining that this particularcondition has been satisfied, the computing device can, within athreshold window of time of controlling the printer to carry out theprint job using the set of trays, control a notification device toprovide a notification indicating that additional media units arerequired for the printer to complete the print job. To facilitatedetermining whether this condition is satisfied, the computing devicecan determine a media unit capacity of the first tray and the secondtray, such as in one or more of the manners discussed above.

As such, when the computing device cannot find one or more trays thatcan print the entire print job, the computing device begins printing theprint job and notifies the user within a threshold window of time of thestart of the print job (e.g., ten seconds before starting printing) thatadditional media units will be needed before such additional media unitsare actually needed. This can help minimize any pause in production ofthe media product and can also advantageously minimize the steps forkeeping print jobs going continuously.

The notification device can take various forms, such as the notificationdevice 106 described above. For example, the computing device canprovide the notification as a message displayed on a display screen ofthe printer and/or as a message sent to a smartphone of the user. Asalso discussed above, the notification can be an audio and/or visualnotification, such as a text message, audio message, email, etc. thatindicates to the user that additional media units are required for theprinter to complete the print job. The notification might also includeother information as well, such as an identification of a tray or trays(e.g., Tray 1, Tray 2, etc.) to which the user should provide (e.g.,load) the additional media units, a number of media units required tocomplete the print job. Other example variations on the notification arepossible as well.

In embodiments where this condition is satisfied and additional mediaunits are required, the act of the computing device controlling theprinter to carry out the print job using the set of trays can involvethe following steps: (i) within a threshold window of time ofcontrolling the printer to carry out the first portion of the print jobusing the first tray, control the printer to enable access to the secondtray such that a user can provide the additional media units to thesecond tray, (ii) determine that the additional media units have themedia unit attribute that matches the job attribute specified by theprint job data, and (iii) in response to determining that the additionalmedia units have the media unit attribute that matches the job attributespecified by the print job data, control the printer to carry out asecond portion of the print job using the second tray after the firstportion of the print job is complete. To enable access to the secondtray, the computing device can unlock, lower, and/or perform otheractions that allow the user to load the additional media units.

In scenarios where the user elects not to provide the additional mediaunits and complete the print job, the computing device might take one ormore responsive actions. For example, if the computing device detectsthat the additional media units have not been loaded, the computingdevice might restrict tray switching based on one or more of theaforementioned conditions and criteria, thereby helping to ensure thatthe entire print job is produced using consistent media units (e.g.,entirely with Letter, White, 80 gsm paper). For instance, althoughmultiple media units might be eligible for use in completing the printjob, once a specific media unit has been used to complete a firstportion of the print job, that specific media unit will be used tofinish the remaining portion of the print job, and the computing devicemight not switch to any other media units even if such media units meetrequirements specified in the print job data (e.g., job attribute(s)).

Additionally or alternatively to performing the method 200 andassociated operations before printing of the print job commences, thecomputing device can perform at least some of the operations describedherein after printing has begun. In some scenarios, for instance, thecomputing device might detect that the media units held by one or moreof the printer's trays have changed while the print job is being carriedout. This might result from a user loading new media units into a tray(with or without being prompted by the printer to do so), removing mediaunits from a tray, and/or swapping media units between trays, amongother possible causes. In response to detecting that the media unitsheld by such tray(s) have changed, the computing device might determinethat a tray that previously did not meet condition(s) of the traycondition set now meets at least the first condition of the traycondition set and can responsively add the tray to the set of trays.Other examples are possible as well.

As noted above, the computing device might have access to a queue ofprint jobs for the printer and can take multiple print jobs from thequeue, including the print job of method 200, into account whenselecting the set of trays. Thus, the computing device can be even moreproactive and help multiple different print jobs to be carried out asefficiently as possible.

For example, the queue can include multiple print jobs, such as theprint job referred to in method 200 and a second print job to be carriedout by the printer to produce at least one copy of a second mediaproduct. Given this queue, in some embodiments, another examplecondition is that the set of trays consists of one or more trays that,individually or in combination, are holding enough media units forsupplying a total number of media units required to complete the secondprint job, the total number of media units being defined as a number ofmedia units required per copy of the second media product multiplied bya number of copies of the second media product requested as part of thesecond print job. Additionally or alternatively, any one or more of theother example conditions described above could be considered by thecomputing device with respect to the second print job, its jobattributes, etc., in selecting which tray(s) should be included in theset of trays.

In some embodiments, the computing device can be configured to reorderone or more of the print jobs in the queue based on one or more criteriaassociated with the media units currently (e.g., at the time thecomputing device makes the determination) in the printer's trays. Tofacilitate this, the computing device might consider the one or morecriteria with respect to each print job in the queue, or with respect toa predefined number of print jobs ahead of the current print job in thequeue. Example criteria can include a number of media units remaining inone or more of the printer's trays, a number of media units required byone or more of the print jobs in the queue, media unit dimensions of themedia units remaining in one or more of the printer's trays, and/or themedia unit dimensions required by one or more of the print jobs in thequeue, among other example possibilities.

Consider, for example, a scenario where there are ten print jobs in thequeue. The computing device can be configured to look ahead to no morethan the next three print jobs in the queue, Print Job 1, Print Job 2,and Print Job 3. The computing device can also determine that Print Job1 requires 50 sheets of Letter, White, 80-120 gsm, Print Job 2 requires50 sheets of Letter, Blue, 80-120 gsm paper, and Print Job 3 requires 20sheets of Letter, White, 80-120 gsm paper. The computing device can alsodetermine that a first tray holds 60 sheets of Letter, White, 120 gsmpaper and a second tray holds 40 sheets of Letter, White, 120 gsm paper.Based on these determinations, the computing device can switch thepositions of Print Job 2 and Print Job 3 in the queue so that, after thefirst tray is selected to print the entirety of Print Job 1, the firsttray can be used to print the first 10 sheets of Print Job 3, and then aswitch to the second tray will occur to print the remaining 40 sheets ofPrint Job 3. Thus, minimal tray switches will occur across the threeprint jobs. For example, if Print Job 2 and Print Job 3 are notswitched, the printer would have to switch to a tray having Letter,Blue, 80-120 gsm paper (unless no such tray exists and loading is thenrequired, which takes additional time), and then switch back to eitherthe first or second tray to complete Print Job 3. Other examples arepossible as well.

In some embodiments, one or more of the operations described above asbeing performed by a user might be automated and performable by thecomputing device and the printer. For example, the printer might have,in a storage that is local to the printer, media units and, instead ofthe user loading new media units into a tray, the computing device mightcontrol the printer to reload the tray itself by accessing andtransferring media units from the storage to the tray. Other examplesare possible as well.

IV. EXAMPLE OPERATIONS FOR CONTROLLING OUTPUT OF MEDIA UNITS

FIG. 3 is a flowchart for a method, in accordance with at least someexample embodiments. Method 300 represents a method for controllingoutput of media units in a printer, where the method 300 can be carriedout by a computing device configured to control operations of a printer,such as computing device 102 shown in FIG. 1. Such a computing devicecan be local to a printer (e.g., an onboard computing device) orremotely positioned from the printer (e.g., a server at a differentgeographic location from the printer).

Block 302 of method 300 involves receiving print job data representing aprint job to be carried out by the printer to produce at least one copyof a media product, wherein the printer includes a plurality of binsthat are each configured for storing media units output by the printerin accordance with print jobs carried out by the printer. The print jobcan be the same print job described above with respect to FIG. 2 andmethod 200, or can be any other print job carried out by the printer.

Block 304 of method 300 involves using a condition set to select, fromthe plurality of bins, a set of one or more bins for use in carrying outthe print job, where the act of using the condition set to select theset of bins involves determining whether the set of bins satisfies atleast one condition of the condition set and, in response to determiningthat the set of bins satisfies at least one condition of the conditionset, selecting the set of bins for use in carrying out the print job. Asdiscussed above, the condition set comprises a first condition that theset of bins includes a particular bin having a remaining media unitcapacity suitable for storing a total number of media units required tocomplete the print job, where the total number of media units can bedefined as a number of media units required per copy of the mediaproduct multiplied by a number of copies of the media product requestedas part of the print job (e.g., ten sheets of paper per copy and onehundred copies resulting in a total number of one thousand sheets ofpaper).

Block 306 of method 300 involves in response to using the condition setto select the set of bins, controlling the printer to carry out theprint job and store media units of the at least one copy of the mediaproduct in the set of bins.

In some embodiments, when the print job is queued for printing, thecomputing device might, before using the bin condition set to select anybins, determine which of the printer's bins are available for use.Within examples, determining whether a bin is available can involvedetermining, by referring to error codes or in some other manner, thatthe bin is operating properly such that there are no mechanical issuesor obstacles (e.g., a paper jam) that might prevent media units frombeing output to the bin. Additionally or alternatively, determiningwhich bins are available can involve determining which bins containmedia units in general and/or how many media units each bin is currentlyholding.

In some embodiments, the bin condition set can include, at a minimum,the first condition described above in this section—namely, the firstcondition that the set of bins includes a particular bin having aremaining media unit capacity suitable for storing a total number ofmedia units required to complete the print job. To facilitate this, thecomputing device can determine a capacity of at least one availablebin—that is, an estimate or determination of how many media units arebeing held by an available bin. The computing device can determine acapacity of a bin in various ways. For example, the capacity of aparticular bin can be hard-coded in the software used by the computingsystem so that the computing device is aware of the capacity of the bin.As another example, the computing device can be communicatively coupledto one or more sensors (e.g., six to twelve sensors) that are configuredto measure a current level of the bin, detect the dimensions of theloaded media units in the bin, measure a weight of the current mediaunits in the bin, and/or make other measurements. Thus, the computingdevice can use readouts from the sensor(s) to determine the capacity ofthe particular bin relative to the maximum capacity. In someembodiments, the capacity of the bin can be determined at a moregranular level than just using sensors. For example, the maximumcapacity of a particular bin might be known to the computing device, andthe delivery of media units to the bin can be a controlled process suchthat the bin cannot be unloaded without registering an engine unloadevent. As such, the computing device can keep track of engine unloadevents (as well as empty bin events that the computing device registers)to determine the capacity of the bin. Other examples are possible aswell.

If the computing device determines that multiple different bins can eachstore the total number of media units, the computing device can selectone of those bins at random or based on one or more criteria, such asmedia unit attributes, number of media units currently stored in eachbin, and/or other criteria.

Other example conditions that could be part of the bin condition setwill now be described in more detail. As such, the bin condition set tobe satisfied can include the first condition and one or more of thefollowing conditions. It should be understood, however, that any one ormore of the following conditions can be used as an alternative to thefirst condition. That is, in selecting bins for use in printing, thecomputing device might determine whether one or more of the followingconditions are satisfied without considering whether the first conditionis satisfied.

In line with the discussion above, the computing device can first lookfor a single bin that has the capacity to store all the media unitsneeded to complete the print job. This can be performed with or withoutconsidering the media unit dimensions required for the print job andspecified by the print job data. For example, another example conditioncan be that the particular bin (e.g., the single bin identified as aresult of the first condition) is configured for storing media unitshaving media unit dimensions that are greater than or equal to the mediaunit dimensions specified by the print job data. In alternativeexamples, this condition might only be met if the particular bin isconfigured for storing media units having media unit dimensions thatequal the media unit dimensions specified by the print job data. Inother alternative examples, this condition might be met if theparticular bin is configured for storing media units having media unitdimensions that fall within a range of media unit dimensions specifiedby the print job data. Other examples are possible as well. In someembodiments, this condition involving media unit dimensions can beconsidered in determining whether a particular bin is available (i.e.,before the first condition is considered).

Because bin switching can impact productivity, outputting to a singlebin (without needing to unload the bin during printing) can be optimal.However, other conditions can address the situation where one bin mightnot be sufficient for storing the whole print job. For instance, anotherexample condition can be that, if the set of bins does not include aparticular bin having a remaining media unit capacity suitable forstoring the total number of media units required to complete the printjob, the set of bins includes multiple bins that, in combination witheach other, have a remaining media unit capacity suitable for storingthe total number of media units. For example, if a first bin and asecond bin each have a remaining media unit capacity of 50 sheets, thecomputing device can select both bins for use in storing a print jobrequiring 100 sheets.

As a result of the set of bins including multiple bins, the computingdevice can cause the printer to switch from outputting media units to afirst bin to outputting media units to a second bin, and so on and soforth if additional bins are included in the set of bins. Switching fromone bin to the next can occur at various times. For example, thecomputing device can switch from printing to the first bin to print tothe second bin once the computing device determines that the first binis full (e.g., has no more remaining capacity).

However, there can be some scenarios where it can be even more efficientto use a different basis for determining how to split up the print jobacross multiple bins. For example, when the computing device determinesthat the set of bins includes multiple bins that, in combination witheach other, have a remaining media unit capacity suitable for storingthe total number of media units, the computing device can responsivelydetermine one or more “break points” that define how the print job issplit up among the multiple bins. As such, the computing device cancontrol the printer to carry out the print job and store media units ofthe at least one copy of the media product in the set of bins inaccordance with the determined one or more break points.

The one or more break points can be determined in various ways. Forexample, when the print job involves printing multiple copies of themedia product, the computing device can determine the break point(s) tobe breaks between the multiple copies of the media product. As a moreparticular example, the print job might involve printing a first copyand a second copy of the media product, in which case the computingdevice can switch bins at a break point between the first and secondcopies of the media product, such that the break point corresponds to abreak between printing of the first copy of the media product andprinting of the second copy of the media product.

Additionally or alternatively, the computing device can determine thebreak point(s) to be breaks between the media products, particularlywhen the media product of the print job includes multiple mediaproducts. For example, the print job can produce multiple media productsintended for different recipients, such as a utility or credit card billfor a first household and a utility or credit card bill for a second,different household. Some post-printing systems (e.g., a printerfinisher for stapling, hole-punching, folding, collating, cutting, etc.)can be used for barcode verification or another technique that ensuresthat a media product intended for a particular recipient is complete andnot mixed with any media units intended for another recipient. Thus, byplacing the break point(s) between multiple media products in this way,the printer or a user can load the output from the print job into apost-printing system without having to worry about a partial mediaproduct. As a more particular example of using breaks between mediaproducts of a print job as break points, the media product that is thesubject of the print job might include a first media product associatedwith a first intended recipient and a second media product associatedwith a second, different intended recipient, in which case the computingdevice can switch bins at a break point between the two media products,such that the break point corresponds to a break between printing of thefirst media product associated with the first intended recipient andprinting of the second media product associated with the second intendedrecipient.

Additionally or alternatively, the computing device can determine thebreak point(s) to be one or more “offset boundaries” that the printerhas been instructed or configured to provide in carrying out the printjob. This action is also sometimes referred to as jogging ordisjointing, and can be performed by a printer for various reasons, suchas making it easier for users to see where one copy/media product endsand the next copy/media product begins. An offset boundary can be aphysical offset between every m media units of the media product thatare printed and/or a physical offset between every n copies of the mediaproduct that are printed, where m is an integer greater than zero and nis an integer greater than zero. In some examples, the print job mightinclude an instruction for the printer to provide the one or more offsetboundaries in carrying out the print job, and perhaps in one or moreother print jobs as well. In other examples, the printer might havesettings from which the user can select, such as toggling offsetboundaries on and off. In still other examples, the printer might beconfigured to provide a particular type of offset boundary (e.g.,between every m media units of the media product that are printed and/ora physical offset between every n copies of the media product that areprinted) by default and can operate according to the default settingunless otherwise instructed by the user or the print job. By treatingoffset boundaries as break points, the computing device can help ensurethat blocks of jogged media units are not split up, thereby increasingproductivity.

In some embodiments, while the printing is being carried out, thecomputing device can, within a threshold period of time (e.g., fifteenseconds) before or after the printer reaches one of the break points,calculate a remaining capacity in the current bin being used. If thecomputing device determines that the remaining capacity in the currentbin is not enough to print a remaining quantity of media units before asubsequent break point, the computing device might proactively switch toa new bin. This can help ensure that the number of media units betweenthe break point(s) is maximized. For example, the printer might beconfigured to place an offset boundary between every 50 sheets printed.In this example, after a first offset boundary and before the second,subsequent offset boundary is reached, the computing device candetermine that a first bin currently being used to store output mediaunits only has a remaining capacity of 30 sheets and responsively switchto a second bin. To facilitate these and other operations, the computingdevice can be configured to continuously or periodically determine theremaining capacity of the current bin and/or other bins, using one ormore sensors, such as the sensor(s) discussed above. In some scenarios,the computing device might pause after an offset is reached, determinethe remaining capacity of the current bin, and then switch to a new binbefore resuming printing. In other scenarios, no substantial pausing(e.g., one second or more) can occur while switching bins.

In line with the discussion above, some situations may arise where,either during bin selection before the print job starts or after binselection while the print job is being carried out, one or more binsbecome full, in which case a user might have to unload media units fromsuch bin(s). The conditions described above might not involve a userhaving to unload media units, and in some embodiments, such conditionscan be prioritized over conditions that are associated with userunloading so as to avoid, whenever possible, a user having to unloadmedia units.

The following conditions relate to situations where the computing devicedetermines that the printer's bins might not be able to store the entireprint job without a user having to unload media units from at least onebin. By having the computing device make such a determination ahead oftime and then react to the determination, the disclosed systems canimprove efficiency in the sense that the computing device can morequickly notify a user that media units will have to be unloaded, therebygiving the user more time to react and unload media units. By contrast,existing solutions might be slower to determine, or might not beconfigured to determine, that media units have to be unloaded and/ormight be slower to notify a user that media units should be unloaded.

Accordingly, another example condition is that, if the set of bins doesnot include a particular bin having a remaining media unit capacitysuitable for storing the total number of media units required tocomplete the print job, the set of bins includes only a single bin thatis currently partially-filled with media units, but has a media unitcapacity suitable for storing the total number of media units requiredto complete the print job. In other words, if no bin can hold the entireprint job, the computing device might determine whether unloading a binwould enable printing of the entire job to a single bin. For example, abin with a capacity of 5000 sheets may hold 2000 sheets, and thus aprint job requiring 4000 sheets can be sent to that bin if the bin isunloaded.

To facilitate determining whether this condition is satisfied, thecomputing device can determine a media unit capacity of at least onebin, such as in one or more of the manners discussed above. If thecomputing device determines that this condition has been satisfied, thecomputing device can responsively control the notification device toprovide a notification indicating that the media units currently in thesingle bin must be unloaded for the printer to complete the print job.The notification device and/or the notification can take forms similarto those described above with respect to tray selection. Additionally oralternatively, the computing device can control the printer to enableaccess to the single bin such that a user can unload the media unitsthat are currently in the single bin. To enable access to the singlebin, or any bin, for that matter, the computing device can unlock,lower, and/or perform other actions that allow the user to unload thebin.

The act of the computing device controlling the notification deviceand/or the act of the computing device controlling the printer to enableaccess to the single bin can be performed before controlling the printerto carry out the print job and store media units of the at least onecopy of the media product in the set of bins. Additionally oralternatively, one or both acts can be performed within a thresholdwindow of time of controlling the printer to carry out the print job,such as within ten seconds before or after instructing the printer tobegin printing. Other example thresholds are possible. Controlling thetiming of the notification and/or the enabling of access to the singlebin can help minimize any pause in production of the media product andcan also advantageously minimize the steps for keeping print jobs goingcontinuously.

In some scenarios, a single bin, even if unloaded, might not be able tostore the total number of media units for the print job. In suchscenarios, the computing device can be configured to split the outputbetween two or more bins where at least one of such bins will beunloaded. As such, another example condition is that, if the set of binsdoes not include one or more bins that, individually and in combination,have a remaining media unit capacity suitable for storing the totalnumber of media units, the set of bins includes (i) a first bin having aremaining media unit capacity suitable for storing a first portion ofthe total number of media units and (ii) a second bin that is currentlypartially-filled with media units, but has a media unit capacitysuitable for storing a second portion of the total number of mediaunits.

If the computing device determines that this condition has beensatisfied, the computing device can responsively control thenotification device to provide a notification indicating that the mediaunits currently in the second bin must be unloaded for the printer tocomplete the print job. The notification device and/or the notificationcan take forms similar to those described above with respect to trayselection. Additionally or alternatively, the computing device cancontrol the printer to enable access to the second bin such that a usercan unload the media units that are currently in the second bin.

The act of the computing device controlling the notification deviceand/or the act of the computing device controlling the printer to enableaccess to the second bin can be performed before controlling the printerto carry out the print job and store media units of the at least onecopy of the media product in the set of bins. Additionally oralternatively, one or both acts can be performed within a thresholdwindow of time of controlling the printer to carry out the print job,such as within ten seconds before or after instructing the printer tobegin printing. Other example thresholds are possible. Controlling thetiming of the notification and/or the enabling of access to the secondbin can help minimize any pause in production of the media product andcan also advantageously minimize the steps for keeping print jobs goingcontinuously.

In some embodiments, the computing device can consider the media unitdimensions of media units currently stored in a bin, in addition toconsidering media unit dimensions, when determining if the bin, ifunloaded, could be suitable for helping store the print job. Forexample, a bin might have a capacity of 5000 sheets. If that bin isstoring 2000 Letter sheets, then it might not be able to store any othersheet dimensions (e.g., tabloid). Thus, if a print job requiring 2000tabloid sheets is queued for printing, the computing device might takeactions to facilitate the unloading of the 5000-sheet bin even if thereare other empty bins that cannot hold 2000 sheets. Other examples arepossible as well.

The computing device can, in some embodiments, be configured toprioritize certain conditions over others. For example, in binselection, the computing device might select bins as follows, listed inorder of preference: one bin that can hold the entire print job, one binthat can hold the entire print job without any bin having to be emptied,two or more bins that can hold the entire print job without any binhaving to be emptied, and two or more bins that can hold the entireprint job if at least one of them is emptied. Other preferences arepossible as well.

Additionally or alternatively to performing the method 300 andassociated operations before printing of the print job commences, thecomputing device can perform at least some of the operations describedherein after printing has begun. In some scenarios, for instance, thecomputing device might detect that the media units stored by one or moreof the printer's bins have changed while the print job is being carriedout, such as a change in quantity of media units stored. This mightresult from a user unloading media units from a bin (with or withoutbeing prompted by the printer to do so) or moving media units from onebin to another, among other possible causes. In response to detectingthat the media units held by such bin(s) have changed, the computingdevice might determine that a bin that previously did not meetcondition(s) of the bin condition set now meets at least the firstcondition of the bin condition set and can responsively add the bin tothe set of bins. Other examples are possible as well.

As noted above, the computing device might have access to a queue ofprint jobs for the printer and can take multiple print jobs from thequeue, including the print job of method 300, into account whenselecting the set of bins. Thus, the computing device can be even moreproactive and help multiple different print jobs to be carried out asefficiently as possible.

For example, the queue can include multiple print jobs, such as theprint job referred to in method 300 and a second print job to be carriedout by the printer to produce at least one copy of a second mediaproduct. Given this queue, in some embodiments, another examplecondition is that the set of bins consists of one or more bins that,individually or in combination, have a remaining media unit capacitysuitable for storing the total number of media units required tocomplete the second print job, the total number of media units beingdefined as a number of media units required per copy of the second mediaproduct multiplied by a number of copies of the second media productrequested as part of the second print job. Additionally oralternatively, any one or more of the other example conditions describedabove could be considered by the computing device with respect to thesecond print job, its job attributes, determined break points, etc., inselecting which bin(s) should be included in the set of bins.

In some embodiments, the computing device can be configured to reorderone or more of the print jobs in the queue based on one or more criteriaassociated with the media units currently (e.g., at the time thecomputing device makes the determination) in the printer's bins. Tofacilitate this, the computing device might consider the one or morecriteria with respect to each print job in the queue, or with respect toa predefined number of print jobs ahead of the current print job in thequeue. Example criteria can include a number of media units currentlybeing stored in one or more of the printer's bins, a remaining capacityof one or more of the printer's bins, a number of media units requiredby one or more of the print jobs in the queue, media unit dimensions ofthe media units currently being stored in one or more of the printer'sbins, and/or the media unit dimensions required by one or more of theprint jobs in the queue, among other example possibilities. In somesituations, the computing device can be configured to prioritize itsconsideration of the number of media units (e.g., currently in the bin,remaining capacity for the bin, and/or required by the print job(s))over all other criteria, and might be configured to also prioritize itsconsideration of the media unit dimensions (e.g., of media units in thebins and/or required by the print job(s)) above all other criteriaexcept the number of media units. Other example priorities are possibleas well.

Consider, for example, a scenario where there are ten print jobs in thequeue. The computing device can be configured to look ahead to no morethan the next three print jobs in the queue, Print Job 1, Print Job 2,and Print Job 3. The computing device can also determine that Print Job1 requires 50 sheets of Letter, White, 80-120 gsm paper, Print Job 2requires 50 sheets of Letter, White, 80-120 gsm paper, and Print Job 3requires 20 sheets of Letter, White, 80-120 gsm paper. The computingdevice can also determine that a first bin has a remaining capacity of70 sheets. Based on these determinations, the computing device canswitch the positions of Print Job 2 and Print Job 3 in the queue sothat, after the first bin is selected to store the entirety of Print Job1, the first bin can then be used to store all 20 sheets of Print Job 3.Then, either a switch to another bin will occur or an unloading of thefirst bin will be prompted. Thus, the number of bin switches across thethree print jobs will be minimized, while also eliminating the splittingof a job between two bins or between bin unload events. Other examplesare possible as well.

In some embodiments, the computing device can be configured such that,when a first job is in progress and the selected bin(s) run out of mediaunits (thus making the first job partially produced), the computingdevice will wait for a predefined period of time (e.g., one minute) foradditional media units to be loaded into the selected bins. If mediaunits are not loaded within the predefined period of time, the computingdevice can determine, using any one or more of the methods andconsiderations described above, whether there are other availablebin(s). If so, the computing device might, in this scenario, print asecond job—namely, the next job in the queue—to the other availablebin(s) to help ensure that the printer can keep printing without beingheld up by the selected bin(s) having run out of media units.Furthermore, in this scenario, the computing device can, in response tothe predefined period of time expiring, modify the bin switching processso that no jobs use the bin(s) that are being used in thepartially-produced job, effectively reserving those bin(s) forcompleting the partially-produced job. The second job can then beprinted from the other bin(s) until the media units needed to completethe partially-produced job are loaded. At that point, the computingdevice can either immediately resume printing to the bin(s) it waspreviously using to output media units for the first job, or can resumeafter the currently printing job (i.e., the second job) is complete.

In some embodiments, one or more of the operations described above asbeing performed by a user might be automated and performable by thecomputing device and the printer. For example, the printer might have,in a storage that is local to the printer, media units and, instead ofthe user unloading media units from a bin, the computing device mightcontrol the printer to unload the bin itself by accessing andtransferring media units from the bin to storage, to a post-printingsystem (e.g., a finisher), or elsewhere. Other examples are possible aswell.

V. CONCLUSION

The illustrative embodiments described in the detailed description,figures, and claims are not meant to be limiting. Other embodiments canbe utilized, and other changes can be made, without departing from thespirit or scope of the subject matter presented herein. It will bereadily understood that the aspects of the present disclosure, asgenerally described herein, and illustrated in the figures, can bearranged, substituted, combined, separated, and designed in a widevariety of different configurations, all of which are explicitlycontemplated herein.

With respect to any or all of the ladder diagrams, scenarios, and flowcharts in the figures and as discussed herein, each block and/orcommunication may represent a processing of information and/or atransmission of information in accordance with example embodiments.Alternative embodiments are included within the scope of these exampleembodiments. In these alternative embodiments, for example, functionsdescribed as blocks, transmissions, communications, requests, responses,and/or messages may be executed out of order from that shown ordiscussed, including substantially concurrent or in reverse order,depending on the functionality involved. Further, more or fewer blocksand/or functions may be used with any of the ladder diagrams, scenarios,and flow charts discussed herein, and these ladder diagrams, scenarios,and flow charts may be combined with one another, in part or in whole.

A block that represents a processing of information may correspond tocircuitry that can be configured to perform the specific logicalfunctions of a method or technique. Alternatively or additionally, ablock that represents a processing of information may correspond to amodule, a segment, or a portion of program code (including relateddata). The program code may include one or more instructions executableby a processor for implementing specific logical functions or actions inthe method or technique. The program code and/or related data may bestored on any type of computer readable medium such as a storage deviceincluding a disk or hard drive or other storage medium.

The computer readable medium may also include non-transitory computerreadable media such as computer-readable media that stores data forshort periods of time like register memory, processor cache, and randomaccess memory (RAM). The computer readable media may also includenon-transitory computer readable media that stores program code and/ordata for longer periods of time, such as secondary or persistent longterm storage, like read only memory (ROM), optical or magnetic disks,compact-disc read only memory (CD-ROM), for example. The computerreadable media may also be any other volatile or non-volatile storagesystems. A computer readable medium may be considered a computerreadable storage medium, for example, or a tangible storage device.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopebeing indicated by the following claims.

What is claimed is:
 1. A method for controlling feeding of media unitsin a printer, the method comprising: receiving, by a computing deviceconfigured to control operation of the printer, print job datarepresenting a print job to be carried out by the printer to produce atleast one copy of a media product, wherein the printer includes aplurality of trays that are each configured for supplying media unitsfor print jobs carried out by the printer; using, by the computingdevice, a condition set to select, from the plurality of trays, a set ofone or more trays for use in carrying out the print job, wherein usingthe condition set to select the set of trays comprises determiningwhether the set of trays satisfies at least one condition of thecondition set and, in response to determining that the set of trayssatisfies at least one condition of the condition set, selecting the setof trays for use in carrying out the print job, wherein the conditionset comprises a first condition that the set of trays includes aparticular tray that is holding enough media units for supplying a totalnumber of media units required to complete the print job, the totalnumber of media units being defined as a number of media units requiredper copy of the media product multiplied by a number of copies of themedia product requested as part of the print job; and in response tousing the condition set to select the set of trays, controlling, by thecomputing device, the printer to carry out the print job using the setof trays.
 2. The method of claim 1, wherein the condition set furthercomprises a second condition that, if the set of trays does not includea particular tray that is holding enough media units for supplying thetotal number of media units, the set of trays includes multiple traysthat, in combination with each other, are holding enough media units forsupplying the total number of media units.
 3. The method of claim 1,wherein the condition set further comprises a second condition that, ifthe set of trays does not include a particular tray that is holdingenough media units for supplying the total number of media units, theset of trays consists of multiple trays and each tray of the multipletrays is holding media units having a same media unit attribute as mediaunits held by each other tray of the multiple trays.
 4. The method ofclaim 1, wherein the condition set further comprises a second conditionthat, if the set of trays does not include a particular tray that isholding enough media units for supplying the total number of mediaunits, the set of trays will require less than a threshold number oftray switches to be performed to complete the print job.
 5. The methodof claim 1, wherein the print job data specifies a job attribute of theprint job, and wherein the condition set further comprises a secondcondition that each tray of the set of trays is holding media unitshaving a media unit attribute that matches the job attribute specifiedby the print job data.
 6. The method of claim 1, wherein the print jobdata specifies a job attribute of the print job, wherein the conditionset further comprises a second condition that, if the set of trays doesnot include one or more trays that, individually and in combination, areholding enough media units for supplying the total number of mediaunits, the set of trays includes: a first tray holding (i) the highestnumber of media units of the plurality of trays and (ii) media unitshaving a media unit attribute that matches the job attribute specifiedby the print job data, and a second tray that (i) has a media unitcapacity suitable for completing the print job after the first tray isempty and (ii) is able to hold media units having the media unitattribute that matches the job attribute specified by the print jobdata.
 7. The method of claim 6, further comprising: determining, by thecomputing device, that the second condition has been satisfied; and inresponse to determining that the second condition has been satisfied,and within a threshold window of time of controlling the printer tocarry out the print job using the set of trays, controlling, by thecomputing device, a notification device to provide a notificationindicating that additional media units are required for the printer tocomplete the print job.
 8. The method of claim 7, wherein controllingthe notification device to provide the notification in response todetermining that the second condition has been satisfied and within thethreshold window of time of controlling the printer to carry out theprint job using the set of trays comprises controlling the notificationdevice to provide the notification in response to determining that thesecond condition has been satisfied and before the printer beginscarrying out the print job.
 9. The method of claim 7, whereincontrolling the printer to carry out the print job using the set oftrays comprises: controlling the printer to carry out a first portion ofthe print job using the first tray, within a threshold window of time ofcontrolling the printer to carry out the first portion of the print jobusing the first tray, controlling the printer to enable access to thesecond tray such that a user can provide the additional media units tothe second tray, determining that the additional media units have themedia unit attribute that matches the job attribute specified by theprint job data, and in response to determining that the additional mediaunits have the media unit attribute that matches the job attributespecified by the print job data, controlling the printer to carry out asecond portion of the print job using the second tray after the firstportion of the print job is complete.
 10. The method of claim 1, whereinthe print job is a first print job, wherein the computing device hasaccess to a queue of print jobs for the printer, the queue including thefirst print job and further including a second print job to be carriedout by the printer to produce at least one copy of a second mediaproduct, and wherein the condition set further comprises a secondcondition that the set of trays consists of one or more trays that,individually or in combination, are holding enough media units forsupplying a total number of media units required to complete the secondprint job, the total number of media units being defined as a number ofmedia units required per copy of the second media product multiplied bya number of copies of the second media product requested as part of thesecond print job.
 11. The method of claim 1, further comprising:receiving, by the computing device, data specifying a plurality of mediaunit attributes preferred for use in carrying out the print job, whereinthe condition set further comprises a second condition that each tray ofthe set of trays is holding media units having media unit attributesthat match each media unit attribute in the plurality of media unitattributes specified by the data.
 12. The method of claim 11, furthercomprising: after receiving the data, receiving, by the computingdevice, second data specifying instructions to consider only a firstsubset of the plurality of media unit attributes and to ignore a secondsubset of the plurality of media unit attributes, wherein the firstsubset and the second subset are mutually exclusive, wherein determiningwhether the set of trays satisfies the second condition comprises, inresponse receiving the second data, the computing device consideringwhether each tray of the set of trays is holding media units havingmedia unit attributes that match each media unit attribute in the firstsubset of media unit attributes specified by the second data, but notconsidering whether each tray of the set of trays is holding media unitshaving media unit attributes that match any of the media unit attributesin the second subset of media unit attributes.
 13. The method of claim1, further comprising: receiving, by the computing device, dataspecifying a plurality of media unit attributes preferred for use incarrying out the print job; while the printer is carrying out the printjob, determining, by the computing device, that the set of trays haveinsufficient media units for completing a remaining portion of the printjob; in response to determining that the set of trays have insufficientmedia units for completing the remaining portion of the print job, andbased on an additional tray of the printer having media unit attributesthat match each media unit attribute in the plurality of media unitattributes specified by the data, selecting, by the computing device,the additional tray for the printer to switch to for carrying out theremaining portion of the print job; and in response to selecting theadditional tray, controlling, by the computing device, the printer tocarry out the remaining portion of the print job using the additionaltray.
 14. A system comprising: a printer, wherein the printer includes aplurality of trays that are each configured for supplying media unitsfor print jobs carried out by the printer; and a computing deviceconfigured to: receive print job data representing a print job to becarried out by the printer to produce at least one copy of a mediaproduct, wherein the printer includes a plurality of trays that are eachconfigured for supplying media units for print jobs carried out by theprinter; use a condition set to select, from the plurality of trays, aset of one or more trays for use in carrying out the print job, whereinusing the condition set to select the set of trays comprises determiningwhether the set of trays satisfies at least one condition of thecondition set and, in response to determining that the set of trayssatisfies at least one condition of the condition set, selecting the setof trays for use in carrying out the print job, wherein the conditionset comprises a first condition that the set of trays includes aparticular tray that is holding enough media units for supplying a totalnumber of media units required to complete the print job, the totalnumber of media units being defined as a number of media units requiredper copy of the media product multiplied by a number of copies of themedia product requested as part of the print job; and in response tousing the condition set to select the set of trays, control the printerto carry out the print job using the set of trays.
 15. The system ofclaim 14, wherein the condition set further comprises a second conditionthat, if the set of trays does not include a particular tray that isholding enough media units for supplying the total number of mediaunits, the set of trays includes multiple trays that, in combinationwith each other, are holding enough media units for supplying the totalnumber of media units.
 16. The system of claim 14, wherein the conditionset further comprises a second condition that, if the set of trays doesnot include a particular tray that is holding enough media units forsupplying the total number of media units, the set of trays consists ofmultiple trays and each tray of the multiple trays is holding mediaunits having a same media unit attribute as media units held by eachother tray of the multiple trays.
 17. The system of claim 14, whereinthe condition set further comprises a second condition that, if the setof trays does not include a particular tray that is holding enough mediaunits for supplying the total number of media units, the set of trayswill require less than a threshold number of tray switches to beperformed to complete the print job.
 18. The system of claim 14, whereinthe print job data specifies a job attribute of the print job, whereinthe condition set further comprises a second condition that each tray ofthe set of trays is holding media units having a media unit attributethat matches the job attribute specified by the print job data, andwherein the job attribute comprises a media unit weight or media unitdimensions.
 19. The system of claim 14, wherein the print job is a firstprint job, wherein the computing device has access to a queue of printjobs for the printer, the queue including the first print job andfurther including a second print job to be carried out by the printer toproduce at least one copy of a second media product, and wherein thecondition set further comprises a second condition that the set of traysconsists of one or more trays that, individually or in combination, areholding enough media units for supplying a total number of media unitsrequired to complete the second print job, the total number of mediaunits being defined as a number of media units required per copy of thesecond media product multiplied by a number of copies of the secondmedia product requested as part of the second print job.
 20. An articleof manufacture comprising non-transitory data storage storing at leastcomputer-readable instructions that, when executed by one or moreprocessors of a computing device, cause the computing device to performoperations comprising: receiving print job data representing a print jobto be carried out by a printer to produce at least one copy of a mediaproduct, wherein the printer includes a plurality of trays that are eachconfigured for supplying media units for print jobs carried out by theprinter; using a condition set to select, from the plurality of trays, aset of one or more trays for use in carrying out the print job, whereinusing the condition set to select the set of trays comprises determiningwhether the set of trays satisfies at least one condition of thecondition set and, in response to determining that the set of trayssatisfies at least one condition of the condition set, selecting the setof trays for use in carrying out the print job, wherein the conditionset comprises a first condition that the set of trays includes aparticular tray that is holding enough media units for supplying a totalnumber of media units required to complete the print job, the totalnumber of media units being defined as a number of media units requiredper copy of the media product multiplied by a number of copies of themedia product requested as part of the print job; and in response tousing the condition set to select the set of trays, controlling theprinter to carry out the print job using the set of trays.